Welcome to pandas!

8 表格转换技术

在excel中的Power Query工具提供了透视列,逆透视列,合并查询,多表合并等关于表格的转换操作。虽然excel中操作起来更简单,但灵活度却没有Pandas高。

1.8.1 列数据转行方向(二维表转一维表)

列索引数据转成行索引数据,是指将分布在列方向展示的数据,转换到行方向来展示数据,可以使用df.stack()和df.melt()两个函数完成,最后的转换结果可以是DataFrame表格,也可以是Series数据。

无论表格的列方向是单层索引,还是分层索引,都可以对整个层级执行转换,可以使用df.stack()函数完成。结构如下:

df.stack(level=1,dropna=True)

level:指定转换知行方向的列索引层级,可以是索引号或标签,默认转换最后层级

dropna:是否删除转换后有缺失值的行,默认删除


import pandas as pd

df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.01 列数据转行方向(二维表转一维表).xlsx" , index_col =0)

#需要设置索引

print (df)

t=df.stack().to_frame().reset_index().rename( columns ={

"level_1":"科目",0:"分数" })

print (t)

返回:

语文 数学 英语
科目
张三 64 74 88
李四 73 66 91
王五 90 68 79

科目 科目 分数
0 张三 语文 64
1 张三 数学 74
2 张三 英语 88
3 李四 语文 73
4 李四 数学 66
5 李四 英语 91
6 王五 语文 90
7 王五 数学 68
8 王五 英语 79